3 Author: Andrés Mejía-Posada
4 (http://blogaritmo.factorcomun.org)
6 Fast. Takes 0.5 seconds on 100 hundred strings of length 1000.
32 //freopen("gattaca.in", "r", stdin);
38 int n
= s
.size(), rep
= 0;
41 vector
<string
> sufijos
;
44 while (t
.size() > 0) t
.erase(t
.begin()), sufijos
.push_back(t
);
45 sort(sufijos
.begin(), sufijos
.end());
46 for (int k
=1; k
<sufijos
.size(); ++k
){
48 for (i
=0; i
<sufijos
[k
].size() && i
< sufijos
[k
-1].size() && sufijos
[k
][i
] == sufijos
[k
-1][i
]; ++i
);
50 t
= sufijos
[k
].substr(0, i
);
52 else if (i
> ans
.size() || (i
== ans
.size() && t
< ans
)) ans
= t
, rep
= 2;
57 //for (int i=0; i<sufijos.size(); ++i) cout << sufijos[i] << endl;
59 if (ans
.empty()) cout
<< "No repetitions found!\n";
60 else cout
<< ans
<< " " << rep
<< endl
;